import axios from 'axios';
import AuthService from './AuthService';

// 在微服务架构下，我们通过网关服务访问各个微服务
// 假设网关服务在8080端口
const API_URL = '/api/todos';

// 处理API响应数据格式，确保前端组件能正确使用
const formatTodoData = (todo) => {
  return {
    id: todo.id,
    name: todo.name || '未命名任务',
    category: todo.category || '默认',
    complete: typeof todo.complete === 'boolean' ? todo.complete : false
  };
};

class TodoService {
  async getAllTodos() {
    try {
      const response = await axios.get(API_URL, { 
        headers: AuthService.getAuthHeader() 
      });
      
      // 如果后端API返回的数据格式不是预期的格式，这里进行转换
      if (response.data && response.data.data) {
        // 确保每个todo对象都有必要的字段
        if (Array.isArray(response.data.data)) {
          response.data.data = response.data.data.map(formatTodoData);
        }
      }
      
      return response;
    } catch (error) {
      console.error('获取待办事项列表出错:', error);
      throw error;
    }
  }

  getTodoById(id) {
    return axios.get(`${API_URL}/${id}`, { 
      headers: AuthService.getAuthHeader() 
    });
  }

  createTodo(todo) {
    return axios.post(API_URL, todo, { 
      headers: AuthService.getAuthHeader() 
    });
  }

  updateTodo(id, todo) {
    return axios.put(`${API_URL}/${id}`, todo, { 
      headers: AuthService.getAuthHeader() 
    });
  }

  deleteTodo(id) {
    return axios.delete(`${API_URL}/${id}`, { 
      headers: AuthService.getAuthHeader() 
    });
  }
}

export default new TodoService(); 